/**
 * 
 */
package com.lanswon.qzsmk.service.systemManageService;

import java.util.List;

import javax.jws.WebParam;
import javax.jws.WebService;

import com.lanswon.qzsmk.exception.ApplicationException;
import com.lanswon.qzsmk.model.AddressArea;
import com.lanswon.qzsmk.model.AddressCity;
import com.lanswon.qzsmk.model.AddressProvince;
import com.lanswon.qzsmk.model.AddressStreet;
import com.lanswon.qzsmk.model.AppClassification;
import com.lanswon.qzsmk.model.AppKind;
import com.lanswon.qzsmk.model.CardLoss;
import com.lanswon.qzsmk.model.CardPhysicsType;
import com.lanswon.qzsmk.model.CardProdunctDefinition;
import com.lanswon.qzsmk.model.PaperType;
import com.lanswon.qzsmk.vo.ResultVo;
import com.lanswon.qzsmk.vo.SamCardVo;

/**
 * @author sun
 *
 */
@WebService
public interface ParamManageService {

	/**
	 * 根据卡产品获取卡名称
	 * @param cardProductCode
	 * @return
	 */
	public CardProdunctDefinition queryCardPCode(String cardProductCode)throws Exception;
	
	/**
	 * 根据证件类型代码获取证件名称
	 */
	public PaperType queryPaperByPaperTypeCode(String paperTypeCode)throws Exception;
	
	/**
	 * 根据证件名称获取证件
	 * @param paperName
	 * @return
	 * @throws Exception
	 */
	public PaperType queryPaperByPaperName(String paperName)throws ApplicationException;
	/**
	 * 根据卡类型代码获取卡类型名称
	 * @param code
	 * @return
	 */
	public String queryCardTypeNameByCode(String code) throws Exception;
	/**
	 * 根据卡类型名称获取卡类型代码
	 * @param name
	 * @return
	 * @throws Exception
	 */
	public CardProdunctDefinition queryCardTypeCodeByName(String name) throws Exception;
	
	/**
	 * 根据卡物理类型代码查询物理类型定义
	 * @param code
	 * @return
	 */
	public CardPhysicsType queryCardPhysicsTypeByCode(String code)throws Exception;
	
	/**
	 * 获取所有的卡物理类型
	 */
	public ResultVo queryAllCardPhysicsType();
	
	/**
	 * 获取所有的卡产品（已启用的）
	 */
	public ResultVo queryAllCardProdunctDefinition();
	
	/**
	 * 获取所有的卡产品(互联网)
	 */
	public ResultVo queryAllCardProdunctDefinition_internet();
	
	/**
	 * 获取所有身份证件类型
	 */
	public ResultVo queryAllCertificates();
	
	/**
	 * 根据父id 查询 区
	 * @param id
	 * @return
	 */
	List<AddressArea> queryAddressAreaByFatherId(String id) throws ApplicationException;
	
	
	/**
	 * 根据父id 查询城市
	 * @param id
	 * @return
	 */
	List<AddressCity> queryAddressCityByFatherId(String id) throws ApplicationException;
	

	/**
	 * 查询所有省份
	 * @return
	 */
	List<AddressProvince> queryAddressProvince();
	
	 
	/**
	 * 根据父id 查询
	 * @param id
	 * @return
	 */
	List<AddressStreet> queryAddressStreetByFatherId(String id) throws ApplicationException;

	/**
	 * 查询所有民族
	 * @return
	 */
	public ResultVo queryNation();
	
	/**
	 * 根据code查询民族
	 * @return
	 */
	public ResultVo queryNationByCode(String numbercode); 
	
	/**
	 * 根据name查询民族
	 * @return
	 */
	public ResultVo queryNationByName(String name);
	
	/**
	 * 查询所有挂失类型
	 * @return
	 */
	List<CardLoss> queryCardLoss();
	
	/**
	 * 查询所有应用类型
	 * @return
	 */
	List<AppKind> queryAppKind();
	
	/**
	 * 查询所有应用分类
	 * @return
	 */
	List<AppClassification> queryAppClassification();
	
	/**
	 * 根据appKindId查询应用类型
	 * @param appKindId
	 * @return
	 */
	List<AppKind> queryAppKindByKindID(String appKindId);
	
	/**
	 * 查询卡下的应用的消费记录
	 * @param citizenCardNo
	 * @param year
	 * @param month
	 * @param tradeCondition 1：充值  2：消费
	 * @param appFlag 1：公交  2：自行车
	 * @return
	 */
	ResultVo  queryPersonalCardInfoAndConsumeRecordsByPaperNo(String citizenCardNo, String year,String month,String tradeCondition,String appFlag);

	/**
	 * 分页显示sam卡信息
	 * @param vo
	 * @return
	 */
	ResultVo querySamCardbyPage(SamCardVo vo);
	
	/**
	 * 获取个人名下所有卡产品
	 * @param paperType
	 * @param paperNo
	 * @param cardPCode
	 * @return
	 */
	ResultVo queryCardProdunctByPersonal(@WebParam(name="paperType")String paperType, @WebParam(name="paperNo")String paperNo, @WebParam(name="cardPCode")String cardPCode);
	
	/**
	 * 生成申请批次号
	 * @param cardPCode
	 * @param cardPhysicalType
	 * @return
	 */
	ResultVo generateApplyBatchNo(String cardPCode,String cardPhysicalType);
	
	/**
	 * 导出申请模板
	 * @param cardPCode
	 * @param cardPhysicalType
	 * @return
	 */
	ResultVo exportApplyTemplate(String root,String cardPCode,String cardPhysicalType);

}
